package com.my.structuraltype.composite;
/*
 *  1.需求中体现的是整体和部分的层次关系，以及用户希望忽略整体与部分的不同，统一的使用整体对象和部分对象时，就应该考虑组合模式。
	2.组合模式让你可以优化处理递归或分级数据结构。如文件系统结构。
	public static void showDetails(File f) {
		//如果是目录
		if(f.isDirectory()){
			//拿到跟目录下所有文件，迭代后递归
			File[] files = f.listFiles();
			for(File file : files) {
				showDetails(file);
			}
		//如果是文件，打印
		}else {
			System.out.println(f.getAbsolutePath());
		}
	}
 */
public class Test {

	public static void main(String[] args) {
		Company root = new HeadCompany("总公司", 0);
		Company bj = new HeadCompany("北京", 1);
		Company sh = new HeadCompany("上海", 1);
		Company xa = new TailCompany("西安", 2);
		Company xm = new HeadCompany("厦门", 2);
		
		root.add(bj);
		root.add(sh);
		sh.add(xa);
		sh.add(xm);
		
		//xa.add(xm); // unsupported
		root.display();
		
		

	}

}
